/*
* Copyright (c) 2021,
* All rights reserved.
*
* 文件名称：base_server.h
* 创建日期：2021/12/19
* 摘 要：基础服务接口声明
*
* 当前版本：1.0
* 作 者：赵满刚
* 完成日期：
*/




#ifndef _BASE_SERVER_H_
#define _BASE_SERVER_H_

#include "../public/protocol.h"

#define LISTENQ 1024

#define MAXLINE 4096

#define HELP_MSG "              ./base_server \n \
                                -a [127.0.0.1] \n \
                                -p [8888] \n \
                                -D [前台运行，打印所有日志] \n \
                                -d [后台运行，WARNING以上日志计入文件] \n \
                                -h 帮助 \n" 
#define ADDRESS_MAX_LENGTH 16

/* 处理返回 */
typedef enum {
    FAIL = -1,
    SUCCESS
};

/* 文件信息 */
typedef struct _ST_FILE_ {
    char file_name[MAX_LEN_FILENAME];
    char file_path[MAX_LEN_FILEPATH];
    long int upload_time;
}ST_FILE;


/* 用户连接信息 */
typedef struct _USER_CONNECT_INFO_ {
    int connect_fd;     /* 连接描述符 */
    int source_port;    /* 源端口号 */
    int user_id;    
    char source_ip[ADDRESS_MAX_LENGTH]; /* 源ip */
    char user_name[MAX_LEN_USERNAME];   /* 用户名 */
    char icon[MAX_LEN_ICON];
}USER_CONNECT_INFO;


/**
 * \brief 用户参数处理
 * 
 * \param [in]	argc 参数数量
 * \param [in]	argv 参数内容
 * \param [in]  address_len 地址字符串最大长度
 * \param [out] address 监听地址
 * \param [out] port 监听端口
 * \return void
 */
void user_opt_deal(int argc, char* argv[], char* address, int address_len, int *port);

/**
 * \brief 用户请求处理
 * 
 * \param [in]	connect_fd 连接套接字
 * \return void
 */
void client_request_deal(int connect_fd);












#endif //_BASE_SERVER_H_